package com.sgj.utils;

import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.stereotype.Component;

/**
 * 自定义 MD5 加密类
 * @author 沈国纪
 * @date 2021/1/13 11:55
 */
@Component
public class MD5Util {

    public static String md5 (String src) {
        return DigestUtils.md5Hex(src);
    }

    // 盐
    private static final String salt = "1a2b3c4d";

    // 一次加密
    public static String inputPassToFromPass (String inputPass) {
        String str = "" + salt.charAt(0) + salt.charAt(2) + inputPass + salt.charAt(5) + salt.charAt(4);
        return md5(str);
    }

    // 二次加密
    public static String fromPassToDBPass (String formPass, String salt) {
        String str = "" + salt.charAt(0) + salt.charAt(2) + formPass + salt.charAt(5) + salt.charAt(4);
        return md5(str);
    }

    // 获取最终的加密字段
    public static String inputPassToDBPass (String inputPass, String salt) {
        String fromPass = inputPassToFromPass(inputPass);
        String dbPass = fromPassToDBPass(fromPass, salt);
        return dbPass;
    }

    public static void main(String[] args) {
        // d3b1294a61a07da9b49b6e22b2cbd7f9
        System.out.println(inputPassToFromPass("123456"));
        // b7797cce01b4b131b433b6acf4add449
        System.out.println(fromPassToDBPass("d3b1294a61a07da9b49b6e22b2cbd7f9", "1a2b3c4d"));
        // b7797cce01b4b131b433b6acf4add449
        System.out.println(inputPassToDBPass("123456", "1a2b3c4d"));
    }
}
